//package com.opc.Jwt;
//
//import com.opc.properties.IpProperties;
//import io.jsonwebtoken.Claims;
//import io.jsonwebtoken.Jwts;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Component;
//import org.springframework.web.servlet.HandlerInterceptor;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//
//@Component
//public class JwtInterceptor implements HandlerInterceptor {
//
//    @Value("${jwt.path}")
//    private String SECRET_KEY;
//
////    private static final String SECRET_KEY = ipProperties.get;
//    @Override
//    public boolean preHandle(HttpServletRequest request,
//                             HttpServletResponse response, Object handler) throws Exception {
//        String token = request.getHeader("Authorization");
//        System.out.println("token是:"+token);
//        //从请求的头部中获取 Authorization 信息，通常包含格式为 Bearer <token> 的字符串。
//        //检查 token 是否存在并且以 Bearer 开头。
//        //如果符合条件，提取出 token 字符串（去掉前面的 Bearer 前缀）。
//        if (token != null && token.startsWith("Bearer ")) {
//            token = token.substring(7); // 提取token字符串,7 是为了去掉 "Bearer " 这个前缀
//            try {
//                Claims claims = Jwts.parser()
//                        .setSigningKey(SECRET_KEY)//设置用于验证的密钥，确保 token 的签名是有效的。
//                        .parseClaimsJws(token)//解析 JWT，返回一个 Claims 对象，包含从 token 中提取的有效载荷（payload）信息。
//                        .getBody();
//
//                // 在这里可以进一步检查claims中的信息，例如角色权限等
//                String username = claims.getSubject();
//                System.out.println("用户名：" + username);
//                System.out.println("过期时间：" + claims.getExpiration());
//                System.out.println("当前时间：" + System.currentTimeMillis());
//                //检查 token 的过期时间：如果当前时间在 token 过期时间之后，则表示 token 已过期。
//                if (claims.getExpiration().before(new java.util.Date())) {
//                    response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); // Token已过期，返回401状态码
//                    //请求被拦截。
//                    return false;
//                }
//                return true; // Token验证通过，放行请求
//            } catch (Exception e) {
//                response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); // Token验证失败，返回401状态码
//                return false;
//            }
//        } else {
//            response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); // 没有提供token，返回401状态码
//            return false;
//        }
//    }
//}